package leetcode.editor.cn;//给你一个字符串 s，找到 s 中最长的回文子串。
//
// 
//
// 示例 1： 
//
// 
//输入：s = "babad"
//输出："bab"
//解释："aba" 同样是符合题意的答案。
// 
//
// 示例 2： 
//
// 
//输入：s = "cbbd"
//输出："bb"
// 
//
// 示例 3： 
//
// 
//输入：s = "a"
//输出："a"
// 
//
// 示例 4： 
//
// 
//输入：s = "ac"
//输出："a"
// 
//
// 
//
// 提示： 
//
// 
// 1 <= s.length <= 1000 
// s 仅由数字和英文字母（大写和/或小写）组成 
// 
// Related Topics 字符串 动态规划 
// 👍 4534 👎 0

//Java：最长回文子串
class LongestPalindromicSubstring{
    public static void main(String[] args) {
        Solution solution = new LongestPalindromicSubstring().new Solution();
        // TO TEST
    }
    
    //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public String longestPalindrome(String s) {

        return null;
    }
}

    public String midO2(String s) {
        //dp[i][j] = 1 表示 从i到j是回文
        boolean[][] dp = new boolean[s.length()][s.length()];

        //初始化
        for (int i = 0; i < s.length(); i++) {
            dp[i][0] = true;
            dp[0][i] = true;
            dp[i][i] = true;
        }
        return "";

    }

    public String palindromeO3(String s) {
        //暴力法 O(n^3)
        int length = 0;
        int begin=0, end=0;
        for (int i = 0; i < s.length(); i++) {
            for (int j = i; j < s.length(); j++) {
                if(isPara(s, i, j)){
                    if( j-i+1 > length) {
                        length = j-i+1;
                        begin = i;
                        end = j;
                    }
                }
            }
        }
        return s.substring(begin, end+1);
    }

    private boolean isPara(String s, int i, int j) {
        while (i<j) {
            if( s.charAt(i) != s.charAt(j)) {
                return false;
            }
            i++;
            j--;
        }
        return true;
    }
//leetcode submit region end(Prohibit modification and deletion)

}